<?php
require_once(dirname(__FILE__) . '/../2day2way_start.php'); //Подключаем главный конфигурационный файл

Pressure::setStart(); // Начинаем сбор данных о нагрузке страницы

//То что будет в кроне:
User_Session::deleteBadSessions();    // Удаляем лишние сессии
User_User::setZeroStatusByTimeOut();  // Устанавливаем флаг offLine для ряда пользователей

$getStrPos = strpos($_SERVER['REQUEST_URI'], '?');
$strUrl = substr($_SERVER['REQUEST_URI'], 0, $getStrPos ? $getStrPos : strlen($_SERVER['REQUEST_URI']));
$arrRequest = explode('/', substr($strUrl, strlen(W_ABSPATH))); // Преобразовываем URL к массиву

// Делаем преобразования по городам
$currentCity = null;
$objCityUrl = new CityUrl();
$arrCities = $objCityUrl->getCitiesAsKeyName();
if (isset($arrCities[$arrRequest[0]])) {
	$currentCity = $arrRequest[0];
	$arrRequest[0] = '';
	foreach ($arrRequest as $row => $requestWord) {
		if ($row) $arrRequest[$row - 1] = $requestWord;
	}
	if ($row) unset($arrRequest[$row]);
}
if (!isset($arrRequest[1])) $arrRequest[1] = ''; // Для упрощения обработки контроллером
if (!isset($arrRequest[2])) $arrRequest[2] = ''; // Для упрощения обработки контроллером
if (!isset($arrRequest[3])) $arrRequest[3] = ''; // Для упрощения обработки контроллером
// Определение контроллера для обработки запроса
switch ($arrRequest[0]) {
	case '': // Страницы, связанные с аутентификацией
    $controller = new Controller_Index($arrRequest); 
		break;
	case 'auth': // Страницы, связанные с аутентификацией
		$controller = new Controller_Auth($arrRequest);
		break;
	case 'pressure': // Страницы, связанные с Нагрузкой на сайте
		$controller = new Controller_Pressure($arrRequest);
		break;
	case 'php_test':
	  echo ABSPATH . 'content/tests/' . $arrRequest[1];
		include_once(ABSPATH . 'content/tests/' . $arrRequest[1]);
		$duration = Pressure::calculateCurrentDuration();
    Pressure::saveDuration($_SERVER['REQUEST_URI'], $duration);
		exit();
	  break;
	  
	case 'zags': // Страницы, связанные с ЗАГСами
		$controller = new Controller_Zags($arrRequest);
		break;
	case 'profile': // Страницы, связанные с профайлами
		$controller = new Controller_Profile($arrRequest);
		break;
	case 'album': // Страницы, связанные с профайлами
		$controller = new Controller_Album($arrRequest);
		break;
	case 'article':	 // Страницы, связанные с профайлами
		$controller = new Controller_Article($arrRequest);
		break;
	  
	  
	case 'ajax': // обработка AJAX - запросов
	  switch ($arrRequest[1]) {
	  	case 'common': // AJAX - обработка общих действий
		    $controller = new Controller_Ajax_Common($arrRequest);
		    break;
	  	case 'auth': // AJAX - обработка общих действий
		    $controller = new Controller_Ajax_Auth($arrRequest);
		    break;
		    
	  	case 'album': // AJAX - обработка загрузки данных в галереи
		    $controller = new Controller_Ajax_Album($arrRequest);
		    break;
		  default:
		    $controller = new Controller_Ajax($arrRequest);
		}
		break;
	default:
	  $controller = new Controller_Default($arrRequest); // Контроллер по умолчанию
	  break;
}
if ($currentCity) $controller->setCity($currentCity, $arrCities[$currentCity]);
if ($controller->error) $controller->showError(); // Проверка не возникли ли ошибки при создании объекта
else $controller->action();
$duration = Pressure::calculateCurrentDuration();
Pressure::saveDuration($_SERVER['REQUEST_URI'], $duration);
?>